package cn.com.generaldata.os.service.intf;

import java.io.File;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import cn.com.generaldata.jsme_indicator_system.entity.Dustry;
import cn.com.generaldata.os.newpojo.SystemCodedic;
import cn.com.generaldata.os.paging.Page;
import cn.com.generaldata.os.paging.Result;
import cn.com.generaldata.os.pojo.IndicatorAccount;
import cn.com.generaldata.os.pojo.IndicatorData;
import cn.com.generaldata.os.vo.IndicatorAccountVO;
import cn.com.generaldata.os.vo.IndicatorDataVO;

public interface IndicatorServiceInterface {

	public Result findIndicatorInputs(String type, String name, Integer frequency, Page page);

	public String createIndicator(IndicatorDataVO indiVo);

	public Result queryIndicatorData(IndicatorDataVO indiVo, Page page);

	public void removeIndicator(String[] ids);

	public Double checkIndicator(int id, String areaId, int timeTYpe, int year);

	public boolean checkUpdateIndicator(String id, String areaId);

	public String updateIndicator(IndicatorDataVO indiVo);

	Result queryIndicatorAccount(IndicatorAccountVO indiVo, Page page,String sort, String order);

	void indicatorAccount(IndicatorAccountVO vo);

	/**
	 * 手工更新核算值
	 * 
	 * @param indiVo
	 * @return
	 */
	String updateIndicatorAccount(IndicatorAccountVO indiVo);

	/**
	 * 查询核算值
	 * 
	 * @param indiVo
	 * @return
	 */
	List<IndicatorAccount> queryIndicatorAccount(IndicatorAccountVO indiVo);
	
	/**
	 * 导出指标核算
	 * 
	 * @param out
	 */
	void exportAccountExcel(OutputStream out, Integer year, Integer yearEnd);

	/**
	 * 导出录入指标模板
	 * 
	 * @param out
	 */
	void downIndicatorTemple(OutputStream out, String type, String industry);

	/**
	 * 导入录入指标
	 * 
	 * @param file
	 */
	String importIndicator(File file, String uid);

	/**
	 * 导入录入企业
	 * 
	 * @param file
	 */
	void downUnitTemple(OutputStream out);

	IndicatorData checkIndicatorExists(int id, String areaId, Integer timeType, Integer yearType, int year,
			Integer quarter);

	void indicatorEvaluation(IndicatorAccountVO vo, int level);

	Result queryIndicatorEvaluation(IndicatorAccountVO indiVo, Page page);

	List<SystemCodedic> queryType();

	void downGDPCodeTemple(OutputStream out, String year);

	Dustry checkGDPCodeExists(String name, int year);

	String importGDPCode(File file, String uid);

	void downCoefficientTemple(OutputStream out, String year);

	String importConsumpValue(File file, String uid);

	void downBasicFlowTemple(OutputStream out, String year);

	String importBaseValue(File file, String uid);

	void downEnterpriseTemple(OutputStream out);

	void unitProTemple(OutputStream out);

	void calculateSingleIndicator(String accountingResultId);

	List<Map> getIndicatorProcess(String accountingResultId);
}
